home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / parallax / more_exa.tar / more / X / xsort.p < prev    next >
Text File  |  1992-10-26  |  1KB  |  50 lines

  1. SYSTEM sort;
  2. (* Odd-Even Transposition Sorting (parallel bubble-sort) *)
  3. (* With X Window Visualization | Braunl, 1992            *)
  4. CONST n = 128;
  5. CONFIGURATION list [1..n];
  6. CONNECTION left : list[i] -> list [i-1].right;
  7.            right: list[i] -> list [i+1].left;
  8.  
  9. SCALAR k, win_num: INTEGER;
  10.        ch        : CHAR;
  11.   
  12. VECTOR val,r,l: INTEGER;
  13.        swap   : BOOLEAN;
  14.  
  15. BEGIN
  16.   PARALLEL
  17.     WriteString('Init with random values'); WriteLn;
  18.     val := VIRandom() MOD 256;
  19.     win_num := OpenAbswindow(n,n); 
  20.     FOR k:=1 TO n DO
  21.       PROPAGATE.right(val,l);
  22.       PROPAGATE.left(val,r);
  23.       swap := FALSE;
  24.  
  25.       IF ODD(k) THEN
  26.         IF ODD(DIM1) AND (r<val) THEN
  27.           val  := r;
  28.           swap := TRUE
  29.         END
  30.       ELSE
  31.         IF EVEN(DIM1) AND (r<val) THEN
  32.           val  := r;
  33.           swap := TRUE
  34.         END;
  35.       END;
  36.  
  37.       PROPAGATE.right(swap);
  38.       IF swap AND (id_no > 1) THEN val:=l END;
  39.  
  40.       SetColor(COLOR(val, val, val));
  41.       SetPixel(DIM1, k);
  42.     END;
  43.   ENDPARALLEL;
  44.  
  45.   WriteString("Press RETURN for termination"); WriteLn;
  46.   Read(ch);
  47.   CloseWindow(win_num);
  48. END sort.
  49.  
  50.